package cc.rengu.redp.hawk.service;

import cc.rengu.redp.hawk.domain.TimestampData;
import com.alibaba.fastjson.JSONObject;

import java.util.List;
import java.util.Map;

/**
 * 算法实现接口
 *
 * @author xushitang
 */
public interface IndexAlgorithm {

    /**
     * 返回前端展示的算法参数配置提示字符串
     * @return
     */
    String paramsSample();

    /**
     * 返回前端展示的算法名称
     * @return
     */
    String algorithmChineseName();

    /**
     * 算法执行
     * @param algParams 算法名称
     * @param timelineData 当前hawkId已缓存的所有历史数据，以key-value形式提供，key（指标名）-value（按时间排序的指标值）
     * @param currData 当前采集的数据
     * @return
     */
    Float run(JSONObject algParams, Map<String, List<TimestampData>> timelineData, JSONObject currData);
}
